Flash memory is commonly used in many electronic systems. Flash memory is used to store program and data information and allow updating firmware in the field when a product is already deployed. Flash memory allows storing a substantial number of files in a small single chip. Flash memory was developed from electrically erasable programmable read-only memory (EEPROM). There are two main types of flash memory, which are named after the NAND and NOR logic gates. The internal characteristics of individual flash memory cells exhibit characteristics similar to those of the corresponding gates.
NOR flash memory is widely used as a direct replacement for regular read only memory (ROM). NAND flash memory uses a different memory access approach, different interface and specific operation requirements. NAND flash memory is often used in applications having large storage requirements. NAND flash memory can store data as well as program information with high data reliability. NAND flash memory can work as a replacement for rotating media storage devices which can be impractical in high mechanic shock environments.
NAND flash memory does not allow random access to any location in the memory. Instead, groups of bytes called pages are requested. In a read operation, the requested page is internally transferred from a flash matrix into a page register from where page data can be accessed in a serial-like manner, byte by byte, starting from the byte at the indicated location within the page. The address within the active page can be freely changed to read other bytes from the given memory page. Changing a page address requires re-executing the matrix read command.
Pages are grouped into blocks which are the smallest area than can be erased. A single page is the smallest region that can be programmed. Blocks are organized in planes and planes in logic units (LUN).
NAND flash memory devices are commonly used as a replacement for traditional hard drives. NAND flash memory devices, such as solid-state drives (SSDs), do not have the mechanical limitations and latencies of traditional hard drives. Thus, NAND flash memory devices generally exhibit better performance than traditional hard drives, such as read/write speed, noise, power consumption, and reliability. NAND flash memory devices are often used in a wide variety of computing environments, such as mobile devices, desktop computers, laptop computers, servers, and storage systems with redundant array of inexpensive disks (RAID) and storage area network (SAN) architectures.
Various noise sources exist in NAND flash memory devices, such as random-telegraph noise, retention process, inter-cell interference, background pattern noise, read/program disturb, etc. Such noise sources reduce the storage reliability of flash memory significantly. The continuous bit cost reduction of NAND flash memory devices mainly relies on aggressive technology scaling and multi-level per cell technique. These techniques, however, further deteriorate the storage reliability of NAND flash memory. For example, the typical storage reliability requirement is that non-recoverable bit error rate (BER) must be below 10−15. Such stringent BER requirement makes error-correcting code (ECC) techniques mandatory to guarantee storage reliability.
Bose, Chaudhuri, Hocquenghem (BCH) is one of the error correction solutions that are used in NAND flash memory devices to read/receive data stored in NAND flash memory. The decoding process of BCH includes calculating syndromes for a received vector, determining the quantity of errors and error locator polynomials from the syndromes using the Berlekamp-Massey algorithm, calculating the roots of the error location polynomial to find the error locations using the Chien-search algorithm, and calculating the error values at those error locations.